package com.company;

//import com.company.inter.ADHero;
//import com.company.inter.APHero;
////import com.company.inheritance.*;
//import com.company.polymorphism.*;
//import com.company.inter.ADHero;
//import com.company.hidden.*;
//import com.company.Super.*;
import com.company.classMethod.*;
public class Main {

    public static void main(String[] args) {
        // write your code here
        //调用equals()
        Hero h1 = new Hero();
        h1.hp = 300;
        Hero h2 = new Hero();
        h2.hp = 400;
        Hero h3 = new Hero();
        h3.hp = 300;
        System.out.println(h1.equals(h2));
        System.out.println(h1.equals(h3));
        // == 这不是Object的方法，但是用于判断两个对象是否相同，更准确的讲，用于判断两个引用，是否只想了同一个对象。
        System.out.println(h1 == h2);
        System.out.println(h1 == h3);

        //调用对象的toString()
//        Hero hero = new Hero();
//        String name = hero.toString();
//        System.out.println(name);
        /*---调用finalize垃圾回收的方法-----*/
//        Hero h;
//        for (int i = 0; i < 10000000; i++){
//            //不断的生成新的对象
//            //每创建一个对象，前一个对象，就没有引用指向了
//            //那些对象，就满足垃圾回收的条件
//            //当立即堆积的比较多的时候，就会触发垃圾回收
//            //一旦这个对象被回收，他的finalize()方法就会被调用。
//            h = new Hero();
//        }
        //实例化一个ADHero(), 其构造方法会被调用， 其父类的构造方法也会被调用。
        // 并且是父类的构造方法先调用，子类的构造方法会默认调用父类的无参构造方法
//        new ADHero("德莱文");
//        new Hero();

        // 调用实现的接口
//        ADHero ad = new ADHero();
//        ad.PhysicalAttacks();
//        APHero ap = new APHero();
//        ap.magicAttack();
        //调用对象的重写方法
//        Item item = new Item();
//        item.effect();
//        System.out.println("\n");
//        LifePosition life = new LifePosition();
//        life.effect();
        //同一个类的子类， 子类重写了父类的方法， 也能表现出多态
//        LifePntion life = new LifePntion();
//        life.effect();
//        System.out.println("\n");
//        MagicPotion magic = new MagicPotion();
//        magic.effect();
        //子类隐藏父类的静态方法
//        ADHero ad = new ADHero();
        // 对象调用的是实例化类的静态方法
//        ad.battleWin();
        // 静态方法的调用不需要实例化对象
//        ADHero.battleWin();
//        Hero.battleWin();


    }
}